@str = global [13 x i8] c"%d %d %d ok\0A\00" 

@test = global [9 x i32] zeroinitializer, align 16
@n = global i32 0, align 4
define i32 @split(i32 %high__ , i32 %low__) nounwind uwtable {
%temp = alloca i32, align 4
%j = alloca i32, align 4
%x = alloca i32, align 4
%i = alloca i32, align 4
%high = alloca i32, align 4
store i32 %high__ , i32* %high ,align 4
%low = alloca i32, align 4
store i32 %low__ , i32* %low ,align 4
%__1 = load i32* %low, align 4
store i32 %__1 , i32* %i ,align 4
%__2 = load i32* %low, align 4
%__3 = sext i32 %__2 to i64
%__4 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__3
%__5 = load i32* %__4, align 4
store i32 %__5 , i32* %x ,align 4
%__6 = load i32* %low, align 4
%__7 = add i32 1 , %__6
%__8 = load i32* %high, align 4
store i32 %__7 , i32* %j ,align 4
br label %1

; <label>:1
%__12 = load i32* %j, align 4
%__9 = icmp sle i32 %__12, %__8
br i1 %__9, label %2, label %3

; <label>:2
%__14 = load i32* %j, align 4
%__15 = sext i32 %__14 to i64
%__16 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__15
%__17 = load i32* %__16, align 4
%__18 = load i32* %x, align 4
%__13 = icmp sle i32 %__17, %__18
br i1 %__13, label %4, label %5

; <label>:4
%__19 = load i32* %i, align 4
%__20 = add i32 1 , %__19
store i32 %__20 , i32* %i ,align 4
%__22 = load i32* %i, align 4
%__23 = load i32* %j, align 4
%__21 = icmp ne i32 %__22, %__23
br i1 %__21, label %6, label %7

; <label>:6
%__24 = load i32* %i, align 4
%__25 = sext i32 %__24 to i64
%__26 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__25
%__27 = load i32* %__26, align 4
store i32 %__27 , i32* %temp ,align 4
%__28 = load i32* %j, align 4
%__29 = sext i32 %__28 to i64
%__30 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__29
%__31 = load i32* %__30, align 4
%__32 = load i32* %i, align 4
%__33 = sext i32 %__32 to i64
%__34 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__33
store i32 %__31 , i32* %__34 ,align 4
%__35 = load i32* %temp, align 4
%__36 = load i32* %j, align 4
%__37 = sext i32 %__36 to i64
%__38 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__37
store i32 %__35 , i32* %__38 ,align 4
br label %7
; <label>:7
br label %5
; <label>:5
%__10 = load i32* %j, align 4
%__11 = add i32 %__10 , 1
store i32 %__11 , i32* %j ,align 4
br label %1

; <label>:3
%__39 = load i32* %i, align 4
%__40 = sext i32 %__39 to i64
%__41 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__40
%__42 = load i32* %__41, align 4
%__43 = load i32* %low, align 4
%__44 = sext i32 %__43 to i64
%__45 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__44
store i32 %__42 , i32* %__45 ,align 4
%__46 = load i32* %x, align 4
%__47 = load i32* %i, align 4
%__48 = sext i32 %__47 to i64
%__49 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 %__48
store i32 %__46 , i32* %__49 ,align 4
%__50 = load i32* %i, align 4
ret i32 %__50 
 }
define i32 @quickSort(i32 %high__ , i32 %low__) nounwind uwtable {
%w = alloca i32, align 4
%high = alloca i32, align 4
store i32 %high__ , i32* %high ,align 4
%low = alloca i32, align 4
store i32 %low__ , i32* %low ,align 4
%__52 = load i32* %low, align 4
%__53 = load i32* %high, align 4
%__51 = icmp slt i32 %__52, %__53
br i1 %__51, label %1, label %2

; <label>:1
%__55 = load i32* %low, align 4
%__56 = load i32* %high, align 4
%__54 = call i32 @split(i32 %__55 , i32 %__56)
store i32 %__54 , i32* %w ,align 4
%__58 = load i32* %low, align 4
%__59 = load i32* %w, align 4
%__60 = sub i32 1 , %__59
%__57 = call i32 @quickSort(i32 %__58 , i32 %__60)
%__62 = load i32* %w, align 4
%__63 = add i32 1 , %__62
%__64 = load i32* %high, align 4
%__61 = call i32 @quickSort(i32 %__63 , i32 %__64)
br label %2
; <label>:2
%__65 = load i32* %w, align 4
ret i32 %__65 
 }
define i32 @main() nounwind uwtable {
store i32 10 , i32* @n ,align 4
%__66 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 0
store i32 38 , i32* %__66 ,align 4
%__67 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 1
store i32 49 , i32* %__67 ,align 4
%__68 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 2
store i32 65 , i32* %__68 ,align 4
%__69 = call i32 @quickSort(i32 0 , i32 3)

%__70 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 0
%___70 = load i32* %__70, align 4
%__71 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 1
%___71 = load i32* %__71, align 4
%__72 = getelementptr inbounds [9 x i32]* @test , i32 0, i64 2
%___72 = load i32* %__72, align 4

%____20 = call i32 (i8*,...)* @printf(i8* getelementptr inbounds ([13 x i8]* @str, i32 0, i32 0), i32 %___70,i32 %___71,i32 %___72)


ret i32 0 
}

declare i32 @printf(i8*, ...) nounwind



